package killer.board.notice.model;

import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;

public class NoticeBoardDaoImpl implements NoticeBoardDao {
	
	// sqlSessionTemplate 를 멤버변수로 받아옴
	private SqlSessionTemplate sqlSessionTemplate;
	
	// NoticeBoardDaoImpl 생성자에서 sqlSessionTemplate 주입
	public NoticeBoardDaoImpl(SqlSessionTemplate sqlSessionTemplate){
		this.sqlSessionTemplate=sqlSessionTemplate;
	}
	/**
	 * 공지사항 게시판 게시물을 등록하는 메서드
	 */
	/*@Override*/
	public int registerNotice(NoticeBoardVO paramNbvo) throws Exception {
		return this.sqlSessionTemplate.insert("noticeBoard.registerNotice",paramNbvo);
	}

	/**
	 * 공지사항 게시판 게시물을 업데이트 하는 메서드
	 */
	/*@Override*/
	public int updateNotice(NoticeBoardVO paramNbvo)throws Exception {
		return this.sqlSessionTemplate.update("noticeBoard.updateNotice",paramNbvo);
	}

	/**
	 * 공지사항 게시판 게시물을 삭제하는 메서드
	 */
	/*@Override*/
	public int deleteNotice(int noticeNo) throws Exception{
		return this.sqlSessionTemplate.delete("noticeBoard.deleteNotice",noticeNo);
	}

	/**
	 * 공지사항 게시판 게시물 업데이트를 위해 게시물 정보를 가져오는 메서드
	 */
	/*@Override*/
	public NoticeBoardVO selectNoticeByNoForUpdate(int noticeNo)throws Exception {
		System.out.println("dao1");
		return this.sqlSessionTemplate.selectOne("noticeBoard.selectNoticeByNoForUpdate",noticeNo);
	}

	/**
	 * 공지사항 게시판 게시물 상세정보를 가져오는 메서드
	 */
	/*@Override*/
	public NoticeBoardVO selectNoticeByNo(int noticeNo)throws Exception {
		return this.sqlSessionTemplate.selectOne("noticeBoard.selectNoticeByNo",noticeNo);
	}

	/**
	 * 한 페이지에 보여줄 게시물을 보여주는 메서드
	 */
	/*@Override*/
	public List selectNoticeList(int nowPage)throws Exception {
		return this.sqlSessionTemplate.selectList("noticeBoard.selectNoticeList",nowPage);
	}
	
	/**
	 * 게시글이 총 몇개인지 구하는 메서드
	 */
	@Override
	public int selectTotalContents()throws Exception {
		return this.sqlSessionTemplate.selectOne("noticeBoard.selectTotalContents");
	}
	
	
}
